Tabs
Docusaurus provides the <Tabs> component that you can use in Markdown thanks to MDX:
- Apple
- Orange
- Banana
This is an apple π
This is an orange π
This is a banana π
It is also possible to provide values and defaultValue props to Tabs:
- Apple
- Orange
- Banana
Tabs props take precedence over the TabItem props.
By default, all tabs are rendered eagerly during the build process, and search engines can index hidden tabs.
It is possible to only render the default tab with <Tabs lazy />.
Displaying a default tabβ
The first tab is displayed by default, and to override this behavior, you can specify a default tab by adding default to one of the tab items. You can also set the defaultValue prop of the Tabs component to the label value of your choice. For example, in the example above, either setting default for the value="apple" tab or setting defaultValue="apple" for the tabs forces the "Apple" tab to be open by default.
Docusaurus will throw an error if a defaultValue is provided for the Tabs but it refers to a non-existing value. If you want none of the tabs to be shown by default, use defaultValue={null}.
Syncing tab choicesβ
You may want choices of the same kind of tabs to sync with each other. For example, you might want to provide different instructions for users on Windows vs users on macOS, and you want to change all OS-specific instructions tabs in one click. To achieve that, you can give all related tabs the same groupId prop.
Doing this will persist the choice in localStorage and all <Tab> instances with the same groupId will update automatically when the value of one of them is changed. Note that group IDs are globally namespaced.
- Windows
- macOS
- Windows
- macOS
For all tab groups that have the same groupId, the possible values do not need to be the same. If one tab group is chosen a value that does not exist in another tab group with the same groupId, the tab group with the missing value won't change its tab. You can see that from the following example. Try to select Linux, and the above tab groups don't change.
- Windows
- macOS
- Linux
I am Windows.
I am macOS.
I am Linux.
Tab choices with different group IDs will not interfere with each other:
- Windows
- macOS
- Windows
- Unix
Customizing tabsβ
Customizing tab headingsβ
You can also customize each tab heading independently by using the attributes field. The extra props can be passed to the headings either through the values prop in Tabs, or props of each TabItemβin the same way as you declare label.
some-doc.mdx
import styles from './styles.module.css';
<Tabs>
<TabItem value="apple" label="Apple" attributes={{className: styles.red}}>
This is an apple π
</TabItem>
<TabItem value="orange" label="Orange" attributes={{className: styles.orange}}>
This is an orange π
</TabItem>
<TabItem value="banana" label="Banana" attributes={{className: styles.yellow}}>
This is a banana π
</TabItem>
</Tabs>
styles.module.css
.red {
color: red;
}
.red[aria-selected='true'] {
border-bottom-color: red;
}
.orange {
color: orange;
}
.orange[aria-selected='true'] {
border-bottom-color: orange;
}
.yellow {
color: yellow;
}
.yellow[aria-selected='true'] {
border-bottom-color: yellow;
}
- Apple
- Orange
- Banana
This is an apple π
This is an orange π
This is a banana π
className would be merged with other default class names. You may also use a custom data-value field ({'data-value': 'apple'}) paired with CSS attribute selectors:
li[role='tab'][data-value='apple'] {
color: red;
}
You might want to customize the appearance of a certain set of tabs. You can pass the string in className prop, and the specified CSS class will be added to the Tabs component:
- Apple
- Orange
- Banana
Query stringβ
It is possible to persist the selected tab into the url search parameters. This enables you to share a link to a page which pre-selects the tab - linking from your Android app to documentation with the Android tabs pre-selected. This feature does not provide an anchor link - the browser will not scroll to the tab.
Use the queryString prop to enable this feature and define the search param name to use.
- Android
- iOS
Android
iOS
As soon as a tab is clicked, a search parameter is added at the end of the url: ?current-os=android or ?current-os=ios.
queryString can be used together with groupId.
For convenience, when the queryString prop is true, the groupId value will be used as a fallback.
- Android
- iOS
Android
iOS
When the page loads, the tab query string choice will be restored in priority over the groupId choice (using localStorage).